home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / GRAPHICS / POV302.ZIP / pov302 / povscn / level3 / pov / chess next >
Text File  |  1997-07-27  |  11KB  |  488 lines

  1. #include "shapes.inc"
  2.  
  3. global_settings { assumed_gamma 1.8 }
  4. default { finish { ambient .3 diffuse .7 } }
  5. #declare r=seed(54321)
  6.  
  7. camera { location <59, 20, -48> look_at <0, 0, 1> }
  8.  
  9. light_source { <800, 600, -200> rgb 1 }
  10.  
  11. #declare Pawn = union
  12.    {
  13.    sphere { 7*y, 1.5 }
  14.    sphere { 0, 1 scale <1.2, .3, 1.2> translate 5.5*y }
  15.  
  16.    intersection
  17.       {
  18.       plane { y, 5.5 }
  19.       object { Hyperboloid_Y translate 5*y scale <.5, 1, .5> }
  20.       plane { -y, -2.5 }
  21.  
  22.       bounded_by { sphere { 3.75*y, 1.86 } }
  23.       }
  24.  
  25.    sphere { 0, 1 scale <2, .5, 2> translate 2.3*y }
  26.  
  27.    intersection
  28.       {
  29.       sphere { 0, 2.5 }
  30.       plane { -y, 0 }
  31.       }
  32.    }
  33.  
  34. #declare Rook = union
  35.    {
  36.    difference
  37.       {
  38.       cylinder { 8*y, 10*y, 2 }
  39.       object { Cylinder_Y scale <1.2, 1, 1.2> }
  40.       box { <-.5, 9, -2.5>, <.5, 10.5, 2.5> }
  41.       box { <-2.5, 9, -.5>, <2.5, 10.5, .5> }
  42.  
  43.       bounded_by { sphere { 9*y, sqrt(5) } }
  44.       }
  45.  
  46.    intersection
  47.       {
  48.       plane { y, 8 }
  49.       object { Hyperboloid_Y scale <1, 1.5, 1> translate 5.401924*y }
  50.       plane { -y, -3 }
  51.  
  52.       bounded_by { sphere { 5.5*y, 3.14 } }
  53.       }
  54.  
  55.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  56.  
  57.    intersection
  58.       {
  59.       sphere { 0, 3 }
  60.       plane { -y, 0 }
  61.       }
  62.    }
  63.  
  64. #declare Knight = union
  65.    {
  66.    intersection
  67.       {
  68.       object { Cylinder_Z scale 17.875 translate <-18.625, 7, 0> inverse }
  69.       object { Cylinder_Z scale 17.875 translate <18.625, 7, 0> inverse }
  70.       object { Cylinder_X scale 5.1 translate <0, 11.2, -5> inverse }
  71.  
  72.       union
  73.          {
  74.          plane { y, 0 rotate 30*x translate 9.15*y }
  75.          plane { z, 0 rotate -20*x translate 10*y }
  76.          }
  77.  
  78.       union
  79.          {
  80.          plane { -y, 0 rotate 30*x translate 7.15*y }
  81.          plane { y, 0 rotate 60*x translate 7.3*y }
  82.          }
  83.  
  84.       union
  85.          {
  86.          plane { y, 0 rotate -45*z }
  87.          plane { y, 0 rotate 45*z }
  88.          translate 9*y
  89.          }
  90.  
  91.       object { Cylinder_Y scale 2 }
  92.       sphere { 7*y, 4 }
  93.  
  94.       bounded_by { sphere { 7*y, 4 } }
  95.       }
  96.  
  97.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  98.  
  99.    intersection
  100.       {
  101.       sphere { 0, 3 }
  102.       plane { -y, 0 }
  103.       }
  104.    }
  105.  
  106. #declare Bishop = union
  107.    {
  108.    sphere { 10.8*y, .4 }
  109.  
  110.    intersection
  111.       {
  112.       sphere { 0, 1 scale <1.4, 2.1, 1.4> translate 8.4*y }
  113.       plane { -y, -7 }
  114.       box { <-2, 0, -.25>, <2, 4, .25> rotate 30*x translate 8.5*y inverse }
  115.  
  116.       bounded_by { sphere { 0, 1 scale <1.4, 2.1, 1.4> translate 8.4*y } }
  117.       }
  118.  
  119.    sphere { 0, 1 scale <1.5, .4, 1.5> translate 7*y }
  120.  
  121.    intersection
  122.       {
  123.       plane { y, 7 }
  124.       object { Hyperboloid_Y scale <.6, 1.4, .6> translate 7*y }
  125.       plane { -y, -3 }
  126.  
  127.       bounded_by { sphere { 4.64*y, 2.48 } }
  128.       }
  129.  
  130.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  131.  
  132.    intersection
  133.       {
  134.       sphere { 0, 3 }
  135.       plane { -y, 0 }
  136.       }
  137.    }
  138.  
  139. #declare QueenAndKing = union
  140.    {
  141.    sphere { 10.5*y, 1.5 }
  142.  
  143.    difference
  144.       {
  145.       cone { 11.5*y, 13/6, 8*y, 1 }
  146.  
  147.       sphere { <1.75, 12, 0>, .9 rotate  150*y }
  148.       sphere { <1.75, 12, 0>, .9 rotate  120*y }
  149.       sphere { <1.75, 12, 0>, .9 rotate   90*y }
  150.       sphere { <1.75, 12, 0>, .9 rotate   60*y }
  151.       sphere { <1.75, 12, 0>, .9 rotate   30*y }
  152.       sphere { <1.75, 12, 0>, .9 }
  153.       sphere { <1.75, 12, 0>, .9 rotate  -30*y }
  154.       sphere { <1.75, 12, 0>, .9 rotate  -60*y }
  155.       sphere { <1.75, 12, 0>, .9 rotate  -90*y }
  156.       sphere { <1.75, 12, 0>, .9 rotate -120*y }
  157.       sphere { <1.75, 12, 0>, .9 rotate -150*y }
  158.       sphere { <1.75, 12, 0>, .9 rotate -180*y }
  159.  
  160.       bounded_by { box { <-13/6, 8, -13/6>, <13/6, 11.5, 13/6> } }
  161.       }
  162.  
  163.    sphere { 0, 1 scale <1.8, .4, 1.8> translate 8*y }
  164.  
  165.    intersection
  166.       {
  167.       plane { y, 8 }
  168.       object { Hyperboloid_Y scale <.7, 1.6, .7> translate <0, 7, 0> }
  169.       plane { -y, -3 }
  170.  
  171.       bounded_by { sphere { 5.22*y, 2.93 } }
  172.       }
  173.  
  174.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  175.  
  176.    intersection
  177.       {
  178.       sphere { 0, 3 }
  179.       plane { -y, 0 }
  180.       }
  181.    }
  182.  
  183. #declare Queen = union
  184.    {
  185.    sphere { 12.3*y, .4 }
  186.    object { QueenAndKing }
  187.    }
  188.  
  189. #declare King = union
  190.    {
  191.    box { <-.25, 11.5, -.25>, <.25, 13.5, .25> }
  192.    box { <-.75, 12.5, -.25>, <.75, 13, .25> }
  193.    object { QueenAndKing }
  194.    }
  195.  
  196. #declare WWood = texture
  197.    {
  198.    pigment
  199.       {
  200.       wood
  201.  
  202.       colour_map
  203.          {
  204.          [ .2 colour rgb <.7, .4, .1>   ]
  205.          [ .5 colour rgb <.95, .62, .3> ]
  206.          }
  207.  
  208.       turbulence .07
  209.       quick_colour rgb <.95, .62, 0>
  210.       rotate 90*x
  211.       scale .4
  212.       translate <200, 0, 100>
  213.       }
  214.  
  215.    finish { specular 1 roughness .01 }
  216.    }
  217.  
  218. #declare BWood = texture
  219.    {
  220.    pigment
  221.       {
  222.       wood
  223.  
  224.       colour_map
  225.          {
  226.          [ .4 colour rgb <.45, .25, 0> ]
  227.          [ .7 colour rgb <.3, .16, 0>  ]
  228.          }
  229.  
  230.       turbulence .07
  231.       quick_colour rgb <.4, .2, 0>
  232.       rotate 90*x
  233.       scale .4
  234.       translate <100.0, 0, -200.0>
  235.       }
  236.  
  237.    finish { specular 1 roughness .01 }
  238.    }
  239.  
  240. #declare FWood = texture
  241.    {
  242.    pigment
  243.       {
  244.       wood
  245.  
  246.       colour_map
  247.          {
  248.          [ .4 colour rgb <.55, .35, 0> ]
  249.          [ .7 colour rgb <.35, .2, 0>  ]
  250.          }
  251.  
  252.       quick_colour rgb <.45, .3, 0>
  253.  
  254.       turbulence .07
  255.       scale <.6 .6 6>
  256.       }
  257.  
  258.    finish { specular 1 roughness .02 }
  259.    }
  260.  
  261. #declare WPawn   = object { Pawn   texture { WWood } }
  262. declare BPawn   = object { Pawn   texture { BWood } }
  263. declare WRook   = object { Rook   texture { WWood } }
  264. declare BRook   = object { Rook   texture { BWood } }
  265. declare WKnight = object { Knight texture { WWood } }
  266. declare BKnight = object { Knight texture { BWood } }
  267. declare WBishop = object { Bishop texture { WWood } }
  268. declare BBishop = object { Bishop texture { BWood } }
  269. declare WQueen  = object { Queen  texture { WWood } }
  270. declare BQueen  = object { Queen  texture { BWood } }
  271. declare WKing   = object { King   texture { WWood } }
  272. declare BKing   = object { King   texture { BWood } }
  273.  
  274. #declare Frame_side = intersection
  275.    {
  276.    box { <-35, -3, -35>, <35, 0, -32> }
  277.    plane { -x+z, 0 }
  278.    plane { x+z, 0 }
  279.    }
  280.  
  281. // The frame of the chessboard
  282.  
  283. union
  284.    {
  285.    object { Frame_side }
  286.    object { Frame_side rotate 180*y }
  287.  
  288.    texture { FWood rotate -88*y translate <200, 40, -20> }
  289.    }
  290.  
  291. union
  292.    {
  293.    object { Frame_side rotate -90*y }
  294.    object { Frame_side rotate 90*y  }
  295.  
  296.    texture { FWood rotate 1.2*x translate <100, 30, 0> }
  297.    }
  298.  
  299. // The board
  300.  
  301. box
  302.    {
  303.    <-32, -3, -32>, <32, 0, 32>
  304.  
  305.    texture
  306.       {
  307.       tiles
  308.          {
  309.          texture
  310.             {
  311.             pigment
  312.                {
  313.                marble
  314.  
  315.                colour_map
  316.                   {
  317.                   [ .7 colour rgb 1  ]
  318.                   [ .9 colour rgb .8 ]
  319.                   [ 1  colour rgb .5 ]
  320.                   }
  321.  
  322.                quick_colour rgb .8
  323.                turbulence 1
  324.                scale .6
  325.                rotate -30*y
  326.                }
  327.  
  328.             finish { specular 1 roughness .02 reflection .25 }
  329.             }
  330.          tile2 texture
  331.             {
  332.             pigment
  333.                {
  334.                granite
  335.  
  336.                colour_map
  337.                   {
  338.                   [0 colour rgb 0  ]
  339.                   [1 colour rgb .5 ]
  340.                   }
  341.  
  342.                quick_colour rgb .3
  343.                scale .3
  344.                }
  345.  
  346.             finish { specular 1 roughness .02 reflection .25 }
  347.             }
  348.          }
  349.  
  350.       scale 8
  351.       }
  352.    }
  353.  
  354. // White pieces
  355.  
  356. union
  357.    {
  358.    object { WPawn rotate 360*rand(r)*y translate -28*x }
  359.    object { WPawn rotate 360*rand(r)*y translate -20*x }
  360.    object { WPawn rotate 360*rand(r)*y translate -12*x }
  361.    object { WPawn rotate 360*rand(r)*y translate  -4*x }
  362.    object { WPawn rotate 360*rand(r)*y translate   4*x }
  363.    object { WPawn rotate 360*rand(r)*y translate  12*x }
  364.    object { WPawn rotate 360*rand(r)*y translate  20*x }
  365.    object { WPawn rotate 360*rand(r)*y translate  28*x }
  366.  
  367.    translate -20*z
  368.    }
  369.  
  370. union
  371.    {
  372.    object { WRook   rotate 360*rand(r)*y translate -28*x }
  373.    object { WKnight                      translate -20*x }
  374.    object { WBishop rotate 360*rand(r)*y translate -12*x }
  375.    object { WQueen  rotate 360*rand(r)*y translate  -4*x }
  376.    object { WKing   rotate 360*rand(r)*y translate   4*x }
  377.    object { WBishop rotate 360*rand(r)*y translate  12*x }
  378.    object { WKnight                      translate  20*x }
  379.    object { WRook   rotate 360*rand(r)*y translate  28*x }
  380.  
  381.    translate -28*z
  382.    }
  383.  
  384. // Black pieces
  385.  
  386. union
  387.    {
  388.    object { BPawn rotate 360*rand(r)*y translate -28*x }
  389.    object { BPawn rotate 360*rand(r)*y translate -20*x }
  390.    object { BPawn rotate 360*rand(r)*y translate -12*x }
  391.    object { BPawn rotate 360*rand(r)*y translate  -4*x }
  392.    object { BPawn rotate 360*rand(r)*y translate   4*x }
  393.    object { BPawn rotate 360*rand(r)*y translate  12*x }
  394.    object { BPawn rotate 360*rand(r)*y translate  20*x }
  395.    object { BPawn rotate 360*rand(r)*y translate  28*x }
  396.  
  397.    translate 20*z
  398.    }
  399.  
  400. union
  401.    {
  402.    object { BRook   rotate 360*rand(r)*y translate -28*x }
  403.    object { BKnight rotate 180*y         translate -20*x }
  404.    object { BBishop rotate 360*rand(r)*y translate -12*x }
  405.    object { BQueen  rotate 360*rand(r)*y translate  -4*x }
  406.    object { BKing   rotate 360*rand(r)*y translate   4*x }
  407.    object { BBishop rotate 360*rand(r)*y translate  12*x }
  408.    object { BKnight rotate 180*y         translate  20*x }
  409.    object { BRook   rotate 360*rand(r)*y translate  28*x }
  410.  
  411.    translate 28*z
  412.    }
  413.  
  414. // Table
  415.  
  416. union
  417.    {
  418.    intersection
  419.       {
  420.       plane {  y, -3 }
  421.       plane {  -y, 8 }
  422.       sphere { -5.5*y, 55 }
  423.       }
  424.    
  425.    intersection
  426.       {
  427.       plane { y, -8 }
  428.       plane { -y, 80 }
  429.  
  430.       object
  431.          {
  432.          Hyperboloid_Y
  433.  
  434.          scale <10, 20, 10>
  435.          translate -20*y
  436.          }
  437.  
  438.       bounded_by { sphere { -50*y, 44.2 } }
  439.       }
  440.    
  441.    pigment
  442.       {
  443.       granite
  444.       scale 6
  445.       quick_colour rgb .5
  446.       }
  447.  
  448.    finish { specular 1 roughness .02 reflection .3 }
  449.    }
  450.  
  451. // Sky
  452.  
  453. object
  454.    {
  455.    sphere { -39000*y, 40000 inverse }
  456.  
  457.    pigment
  458.       {
  459.       bozo
  460.  
  461.       colour_map
  462.          {
  463.          [.5, colour rgb <.4, .5, 1> ]
  464.          [.7, colour rgb 1           ]
  465.          [1   colour rgb .7          ]
  466.          }
  467.  
  468.       turbulence .6
  469.       quick_colour rgb <.4, .5, 1>
  470.  
  471.       scale 500
  472.       }
  473.  
  474.    finish { ambient 1 diffuse 0 }
  475.  
  476.    no_shadow
  477.    }
  478.  
  479. // Ground
  480.  
  481. object
  482.    {
  483.    plane { y, -80 }
  484.    pigment { rgb <.1, .6, .05> }
  485.    finish { crand .05 ambient .5 diffuse .5 }
  486.    no_shadow
  487.    }
  488.